package com.ruoyi.shop.util;

import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.security.CipherUtils;
import jodd.util.Base64;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 作者: @author Alan Zhang
 * 时间: 2021/9/17 16:33
 * 描述:
 */
public class ImageUtils {
    /**
     * 删除本地图片文件
     * @param imgUrl 图片地址
     * @return
     */
    public static boolean deleteFile(String imgUrl){
        if(StringUtils.isEmpty(imgUrl)){
            return false;
        }

        if(imgUrl.contains(Constants.RESOURCE_PREFIX)){
            // 上传文件路径
            String filePath = RuoYiConfig.getProfile();
            int d = Constants.RESOURCE_PREFIX.length();
            int index = imgUrl.indexOf(Constants.RESOURCE_PREFIX);

            String path = filePath + imgUrl.substring((index+d));
            return FileUtils.deleteFile(path);
        } else {
            return false;
        }
    }


    /**
     * 商品 图片
     * @param multipartFile 上传文件
     * @return
     * @throws IOException
     */
    public static String uploadProduct(MultipartFile multipartFile) throws IOException {
        // 上传文件路径
        String filePath = RuoYiConfig.getProductUploadPath();
        // 上传并返回新文件名称
        String fileName = FileUploadUtils.upload(filePath, multipartFile);
        return fileName;
    }


    /**
     * 广告 图片
     * @param multipartFile 上传文件
     * @return
     * @throws IOException
     */
    public static String uploadAd(MultipartFile multipartFile) throws IOException {
        // 上传文件路径
        String filePath = RuoYiConfig.getAdUploadPath();
        // 上传并返回新文件名称
        String fileName = FileUploadUtils.upload(filePath, multipartFile);
        return fileName;
    }


    /**
     * 图片
     * @param multipartFile 上传文件
     * @return
     * @throws IOException
     */
    public static String upload(MultipartFile multipartFile) throws IOException {
        // 上传文件路径
        String filePath = RuoYiConfig.getUploadPath();
        // 上传并返回新文件名称
        String fileName = FileUploadUtils.upload(filePath, multipartFile);
        return fileName;
    }

    /**
     * 退款 图片
     * @param multipartFile 上传文件
     * @return
     * @throws IOException
     */
    public static String uploadRefund(MultipartFile multipartFile) throws IOException {
        // 上传文件路径
        String filePath = RuoYiConfig.getRefundUploadPath();
        // 上传并返回新文件名称
        String fileName = FileUploadUtils.upload(filePath, multipartFile);
        return fileName;
    }

    public static void main(String[] args) {
        //String d = Base64.encodeToString(CipherUtils.generateNewKey(128, "AES").getEncoded());
        //System.out.println(d);

        String s = GenNumberUtils.uuid();
        System.out.println(s);
    }

}
